#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
#include <string.h>

void hand(int s)
{
    if (2==s)
    {
        printf("收到信号\n");
        pthread_exit((void*)666);
    }
}


void* func(void*)
{
    signal(2,hand);
    for (int i=0;i<5;i++)
    {
        printf("线程1：%d\n",i);
        sleep(1);
    }
}


void* func2(void*)
{
    for (int i=0;i<10;i++)
    {
        printf("线程2：%d\n",i);
        sleep(1);
    }
}


int main()
{
    pthread_t pt1;
    pthread_t pt2;
    pthread_create(&pt1,NULL,func,NULL);
    pthread_create(&pt2,NULL,func2,NULL);

    int i=0;

    int n=0;

    while (1)
    {
        n++;
        if (n==2)
        {
            pthread_kill(pt1,2);
            pthread_cancel(pt2);
        }
        if (n>5)
        {
            break;
        }
        printf("线程2：%d\n",i++);
        sleep(1);
    }
    void * p1;
    void * p2;
    pthread_join(pt1,&p1);
    pthread_join(pt2,&p2);

    printf("p1:%d,p2:%d\n",p1,p2);



    return 0;
}